let a = {
    computed: {
        fullName: {
            get() {
                console.log("@",this)
                return "王牌车手，咖宝变身"
            }
        }
    }
}

// 封装getter
function VueObj(options) {

    // fullName  属性的可以通过枚举出来的
    let  computedObj = Object.keys(options.computed);
    for (const stringKey of computedObj) {
        Object.defineProperty(this, stringKey, {
            get: function computedGetter() {
                let getMethod = options.computed[stringKey];
                // 更改计算属性里面的get()方法里面的this指向，这样在里面执行this，就是这个实例对象
                /*let bindFunction = getMethod.get.bind(this);
                return bindFunction();*/
                return getMethod.get.call(this)
            }
        })
    }
}

let vueObj = new VueObj(a);
console.log(vueObj.fullName)

